package com.lee.message.core.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 业务类型，幂等数据存放时间
 */
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Idempotent {

    /**
     * 业务类型
     * @return
     */
    String type() default "";

    /**
     * 锁时间
     */
    int lockTime() default -1;

    /**
     * 锁时间单位
     */
    TimeUnit lockTimeUnit() default TimeUnit.SECONDS;

    /**
     * 存储时间
     * @return
     */
    int storeTime() default -1;

    /**
     * 存储时间单位
     * @return
     */
    TimeUnit storeTimeUnit() default TimeUnit.DAYS;

}
